Congestion control techniques, such as throttling, may be used in many types of computer systems to avoid instabilities and/or performance degradations that can occur when a system is overloaded with inputs.
For example, a server system, such one providing data on the Internet, may use a system controller known as a throttle (sometimes called a bandwidth throttle) to limit the rate at which the server system accepts data requests to avoid overloading the server system's processing capacity. With such systems, client requests for data can vary over time, and at peak times those requests can exceed the capacity of the server, causing congestion and bottlenecks. Data failures may result, and in some cases, server crashes can occur. To prevent such occurrences in such server systems, a throttle may be implemented, for example, to control the number of requests the system responds to within a specified period of time.
Congestion control techniques like throttling have application beyond server systems and system controllers like throttles may be used to perform congestion control in other types of computer processing. In general, a system controller, like a throttle, may be introduced to a system to regulate input, insure stability of the system, optimize throughput and insure quality of service.
Though congestion control may have wide application in computer systems, the process of determining a proper system control point (e.g. a proper throughput or input/output level) in a given system to achieve and maintain an optimal performance can pose significant challenges. For example, with server systems using a throttle, the determination of a proper throttling point may depend on many factors, including computer hardware used, number of processing resources available, types and size of data being requested (stored or retrieved), and client usage patterns. Additionally, even if an optimal control point for a system controller can be found at one time for a given system, the optimal level may not be static. Factors influencing the optimal level may change (e.g. client usage patterns, equipment brought on-line and/or taken off-line, etc.), and accordingly the “optimal” system control point for the system may change over time.
Thus, in many systems a system controller, such as a throttle, must be consistently watched and adjusted, for example, by a system administrator. Determining the proper system control level may be done for some systems, for example, by using a trial and error approach of manually adjusting a system control value (such as the throttling rate) and measuring the relative performance changes until desired performance is seen. Even if a factory setting (of a reasonable system control setting for typical use cases) is used, the factory setting may not be ideal for every situation.
Where considered appropriate, reference numerals may be repeated among the figures to indicate corresponding or analogous elements.